package com.wayhome.srpingbootmybatis.policy.dao;

import com.wayhome.srpingbootmybatis.policy.dto.PolicyDocDTO;
import com.wayhome.srpingbootmybatis.policy.dto.PolicyDocFileDTO;
import com.wayhome.srpingbootmybatis.policy.dto.ReqPolicyDocDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface PolicyDocDao {

    /**
     * 新增政策文件
     *
     * @param policyDocDTO 请求参数
     * @return 返回结果
     */
    Boolean insertPolicyDoc(PolicyDocDTO policyDocDTO);

    /**
     * 查询政策文件，不关联上传的文件
     *
     * @param id 主键ID
     * @return 返回结果
     */
    PolicyDocDTO queryPolicyDocById(@Param("id") Long id);

    /**
     * 查询政策列表
     *
     * @param reqPolicyDocDTO 请求参数
     * @return 返回结果
     */
    List<PolicyDocDTO> queryPolicyDocList(ReqPolicyDocDTO reqPolicyDocDTO);

    /**
     * 更新政策文件
     *
     * @param policyDocDTO 请求参数
     * @return 返回结果
     */
    Boolean updatePolicyDoc(PolicyDocDTO policyDocDTO);

    /**
     * 保存上传政策文件
     *
     * @param list 请求参数
     * @return 返回结果
     */
    Boolean batchInsertPolicyDocFile(List<PolicyDocFileDTO> list);

    /**
     * 查询政策文件
     *
     * @param policyDocId 政策文件id
     * @return 返回结果
     */
    List<PolicyDocFileDTO> queryDocFileList(@Param("policyDocId") Long policyDocId);

    /**
     *  编辑时删除政策上传文件
     *
     * @param list 要删除的文件id
     * @return 返回
     */
    Boolean batchInvalidateDocFile(@Param("list") List<Long> list);

    /**
     * 查询政策文件
     *
     * @param list 政策文件id
     * @return 返回结果
     */
    List<PolicyDocFileDTO> queryDocFileListByPolicyDocIds(@Param("list") List<Long> list);
}
